#include<iostream>
#include<unistd.h>
#include<sys/wait.h>

int main()
{
   pid_t id=fork();//创建子进程
   if(id==0)
   {
       //子进程执行
        while(1);
        exit(1);//返回错误码
   }
   else if(id>0)
   {
       int status=0;//接收状态码的变量
       waitpid(id,&status,0);//将status的地址传给waitpid，接着waitpid就会将子进程的状态码传给status
       printf("subprocess status:%d\n",status);//打印status的值
       printf("subprocess error code:%d\n",WEXITSTATUS(status));
       printf("subprocess flag code:%d\n",status&(0x7f));
   }
   return 0;
}

//int main()
//{
//    pid_t id=fork();
//    if(id==0)
//    {
//        std::cout<<"subprocess:"<<getpid()<< " is running"<<std::endl;
//        sleep(5);
//        printf("subprocess end\n");//提醒用户子进程已经结束
//        exit(0);
//    }
//    else if(id>0)
//    {
//        sleep(10);
//        pid_t subid=wait(nullptr);
//        std::cout<<"subprocess:"<<subid<<" is waited success"<<std::endl;
//        while(1);//让父进程先别结束
//    }
//    return 0;
//}
